<?php
/**
 * @fileoverview
 * 公用函数的定义
 */

/**
 * 重定向
 * @param {string} $url 目标url（相对于站内的绝对路径）
 */
function redirect($url) {
	global $base_url;

	$url = preg_replace('/^\//', '', $url);
	$base_url = preg_replace('/\/$/', '', $base_url);
	header("Location: $base_url/$url");
	exit;
}

/**
 * 判断用户是否已经登录
 * @type bool
 * @return 已经登录则返回true，否则false
 */
function is_logined() {
	if (empty($_SESSION['userid'])) {
		return false;
	} else {
		return true;
	}
}

function is_admin() {
	if (empty($_SESSION['admin'])) {
		return false;
	} else {
		return $_SESSION['admin'];
	}
}

/**
 * 需要用户登录的功能
 */
function require_login() {
	if (!is_logined()) {
		redirect("/#login");
	}
}

function get_current_userid() {
	if (empty($_SESSION['userid'])) {
		return false;
	} else {
		return $_SESSION['userid'];
	}
}

/**
 * 检查错误信息
 * @param {string} $type 要获取的错误信息类型
 * @return 错误信息
 * @type string
 */
function get_error($type) {
	if (!empty($_GET['err'])) {
		$err_type = $_GET['err'];
		if ($err_type == $type) {
			$msg = $_GET['msg'];
			return $msg;
		}
	}
	return false;
}

/**
 * 获取POST变量
 */
function get_post($name) {
	$value = $_POST[$name];

	if (ini_get('magic_quotes_gpc')) {
		$value = stripslashes($value);
	}

	return $value;
}

/**
 * 检查变量的长度
 * @param {string} $str 需要检查的变量内容
 * @param {int} $min 变量长度的最小值
 * @param {int} $max 变量长度的最大值
 * @param {string} $msg 出错时要显示的错误信息，两个%d显示最小值和最大值
 */
function check_length($str, $min, $max, $msg) {

	$error = '';
	$len = strlen($str);
	if ($len < $min || $len > $max) {
		$error = sprintf($msg, $min, $max);
	}

	return $error;
}


/**
 * 检查现在是否为允许注册的时间段
 * @type bool
 * @return true=允许注册 false=不允许注册
 */
function is_registerable_now() {
	global $reg_time_start, $reg_time_end;

	if (empty($reg_time_start)) $reg_time_start = '00:00';
	if (empty($reg_time_end))   $reg_time_end   = '00:00';

	list($start_h, $start_m) = explode(':', $reg_time_start);
	list($end_h,   $end_m  ) = explode(':', $reg_time_end);

	$ts_start = mktime($start_h, $start_m);
	$ts_end = mktime($end_h, $end_m);

	$now = time();

	if ($ts_end > $ts_start) {
		return ($ts_start<=$now && $now<$ts_end);
	} else {
		return ($now < $ts_end || $now >= $ts_start);
	}

}

?>
